PLI 动态数组的例子

新写了一个PL/I程序,需要在程序里面用到动态数组来提高效率,所以总结了一下PL/I中动态数组(Dynamic Array)的用法:
1.申明一个Controlled的数组叫做WT_TMPARRAY_INFO,此时并不知道该数组的长度:

DCL  INPUTFIL FILE RECORD INPUT;
DCL  TMPARRAY_CTR         FIXED BIN(31)   INIT(0);                             
DCL  TMPARRAY_SUB         FIXED BIN(31)   INIT(1);  
DCL 01 TMPARRAY_RECORD,                                                        
        05 INPUT_CUR     CHAR(03)             INIT(' '),                          
        05 INPUT_ACCT    CHAR(05)             INIT(' '); 

/*******定义未知长度的动态数组WT_TMPARRAY_INFO*************************/
DCL 01 WT_TMPARRAY_INFO(*) CONTROLLED,                                         
        05 WT_TMP_CUR  CHAR(03)             INIT(' '),                          
        05 WT_TMP_ACCT CHAR(05)             INIT(' ');   

2.一旦得知了数组需要的长度,即可为它allocate空间。数组的长度可以是外部文件传进来,也可以是你程序中逻辑计算得到,这个无所谓哪里来的,只要赋给变量TMPARRAY_CTR就好了。

ALLOCATE WT_TMPARRAY_INFO (TMPARRAY_CTR);

3.分配了空间之后即可初始化数组,给其赋值。 rubyDO TMPARRAY_SUB = 1 TO TMPARRAY_CTR; READ FILE(INPUTFIL) INTO (TMPARRAY_RECORD); WT_TMP_CUR(TMPARRAY_SUB) = INPUT_CUR; WT_TMP_ACCT(TMPARRAY_SUB) = INPUT_ACCT; END;

Comments !